package L613;

import java.util.Arrays;

/**
 * @program: javase
 * @description: 下一个字典序更大的排序
 * [1,2,2,1,3,2,2,1] <- 第一个比后面元素大的位置 下标3
 * <- 找第一个比下标3元素大的位置 下标 2
 * 交换两个，[1,2,2, 2 ,3,2, 1 ,1]
 * 然后对 下标 2 后面元素排序 [1,2,2, 2 ,1,1,2,3]
 * @author: luolidong
 * @create: 2021-06-13 10:35
 * @version: 1.0
 */
public class Demo2 {
    public void nextPermutation(int[] nums) {
        int end=-1;
        for (int i = nums.length-1;i>0;i--) {
            if(nums[i]>nums[i-1]){
                end=i-1;
                break;
            }
        }
        if(end>=0){
            int j=nums.length-1;
            while (j>=0&&nums[j]<=nums[end]){
                j--;
            }
            swap(nums, end,j);
        }
        Arrays.sort(nums,end+1,nums.length);
    }
    public void swap(int[] nums,int i,int j){
        int temp=nums[i];
        nums[i]=nums[j];
        nums[j]=temp;
    }

    public static void main(String[] args) {
        int[] ints = {1, 2, 3, 4, 2, 1, 1};
        new Demo2().nextPermutation(ints);
        System.out.println(Arrays.toString(ints));

    }
}
